package cn.vendcommon.com.entity;

// 统一响应结果

import cn.vendcommon.com.entity.constants.CommonCodeMsg;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result<T> {
    private Integer code;   // 业务状态码  0-成功  非0-失败（也可使用枚举里定义的 code）
    private String message; // 提示信息
    private T data;         // 响应数据

    // 快速返回操作成功响应结果(带响应数据)
    public static <E> Result<E> success(E data) {
        return new Result<>(0, "操作成功 ✅", data);
    }

    // 快速返回操作成功响应结果（无数据）
    public static Result<Void> success() {
        return new Result<>(0, "操作成功 ✅", null);
    }

    // 业务错误（自定义 message）
    public static <T> Result<T> error(String message) {
        String msg = message == null ? "操作失败 ❌" : message + " ❌";
        return new Result<>(1, msg, null);
    }

    // 失败（直接传入 CommonCodeMsg）—— 更语义化的重载
    public static <T> Result<T> error(CommonCodeMsg codeMsg) {
        return new Result<>(codeMsg.getCode(), codeMsg.getMsg(), null);
    }

    // 兼容你之前的命名（如果其他地方还在用）
    public static <T> Result<T> errorCommonCode(CommonCodeMsg codeMsg) {
        return error(codeMsg);
    }
}
